#ifndef _PERSONNAGE_H
#define _PERSONNAGE_H

#include <assert.h>
#include <stdio.h>
#include "terrain.h"

typedef enum {NN=0, NE, EE, SE, SS, SO, OO, NO} direction;


extern int vecteur[8][2];

struct spersonnage
{
	int posX;
	int posY;
	direction dir;
	int PV;
	int nbMunition;
};
typedef struct spersonnage personnage;

/* -----------------------------------Fonctions et structure de la balle-------------------------------------------*/

struct sballe
{
    direction dir;
	int posX;
	int posY;
	int portee;

};
typedef struct sballe balle;

void balleInit(balle *b, const terrain *t, const personnage *p);

void balleLibere(balle *b);




void BsetPosition(balle *b, const terrain *t , const int x , const int y);
/* Définie la position de la balle */

void setPortee(balle *b, const terrain *t, const int PO);
/* Définie la portée de la balle */

int BgetPosX(const balle* b);
/* Renvoie la position de la balle X */

int BgetPosY(const balle* b);
/* Renvoie la position de la balle Y */

int getPortee(const balle* b);
/* Renvoie la portée de la balle */

/* ----------------------------- Fonctions sur le personnage -----------------------------------------*/

void persoInit(personnage * p, const terrain* t);
/*Initialise le personnage*/

void deplacementAvant(personnage * p , const terrain* t);
/* Déplace le personnage d'une case en avant par rapport à sa position*/

void deplacementArriere(personnage * p , const terrain* t);
/* Déplace le personnage d'une case en arrière par rapport à sa position*/

const int PgetPosX(const personnage* p);
/* Renvoie la position en X du personnage*/

const int PgetPosY(const personnage* p);
/* Renvoie la position en Y du personnage*/

const int getDirection(const personnage* p);
/* Donne la valeur en x et en y de la direction du personnage dans un tableau */

const int PgetPV(const personnage* p);
/* Renvoie les points de vie du personnage*/

void setDirection (personnage * p, int i);
/* Définie la direction du personnage*/

void setPVplus(personnage * p);
/* Ajoute un point de vie au personnage*/

void setPVmoins(personnage * p);
/* Retire un point de vie au personnage*/

void PsetPosition(personnage * p , terrain * t, const int x , const int y);
/* Définie la position du personnage */

void setBalleTiree(personnage * p);
/* Retire une balle au personnage*/

const int PgetNBmunition(const personnage * p);

#endif
